//package com.boot2.core.aop;
//
//import lombok.extern.apachecommons.CommonsLog;
//import org.slf4j.MDC;
//import org.springframework.web.servlet.ModelAndView;
//import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.util.UUID;
//
// /**
// * @author zhangweilin
// * @date 2018/9/17 11:00
// * @description:  生成日志追踪ID拦截器
// */
//@CommonsLog
//public class LogTraceInterceptor extends HandlerInterceptorAdapter {
//
//	private final static String TRACE_ID = "traceId";
//
//	// 在请求处理之前回调方法
//	@Override
//	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
//			throws Exception {
//
//		String traceId = MDC.get(TRACE_ID);
//		if (traceId == null || "".equals(traceId)) {
//			//TODO 请换成Long类型
//			String uuid = UUID.randomUUID().toString();
//			uuid = uuid.replaceAll("-", "").toUpperCase();
//			MDC.put(TRACE_ID, uuid);
//			log.info("ControllerInterceptor preHandle 在请求处理之前生成 logback requestUUID:{" + uuid + "}");
//		}
//
//		return true;// 只有返回true才会继续向下执行，返回false取消当前请求
//	}
//
//	// 请求处理之后回调方法
//	@Override
//	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
//			ModelAndView modelAndView) throws Exception {
//		/* 线程结束后需要清除,否则当前线程会一直占用这个requestId值 */
//		MDC.remove(TRACE_ID);
////		log.info("ControllerInterceptor postHandle 请求处理之后清除 logback MDC requestUUID");
//	}
//
//	// 整个请求处理完毕回调方法
//	@Override
//	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
//			throws Exception {
//		/* 整个请求线程结束后需要清除,否则当前线程会一直占用这个requestId值 */
//		MDC.clear();
////		log.info("ControllerInterceptor afterCompletion 整个请求处理完毕清除 logback MDC requestUUID");
//	}
//}
